package com.skycong.skycongtool.sharedPreferencestools;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import java.util.Map;

/**
 * 轻量级的存储类，用来保存应用的一些常用配置
 * Created by Kiki on 2018/5/3.
 */

public class SharedPrefrencesTools {
    private Context context;
    private String spName = "local_store";
    private String up = "uAndP";
    private static SharedPrefrencesTools spTools;

    private SharedPrefrencesTools(Context context){
        this.context = context;
    }
    public static SharedPrefrencesTools getSPInstance(Context context){
        if(spTools == null){
            spTools = new SharedPrefrencesTools(context.getApplicationContext());
        }
        return spTools;
    }
    /**
     * 设置SharedPreferences存储
     *  */
    public void setSharedPreferences(Map<String,String> params){
        /*
        * 第二个参数
        * 私有模式，Context.MODE_PRIVATE 的值是 0;
        * ①只能被创建这个文件的当前应用访问
        * ②若文件不存在会创建文件；若创建的文件已存在则会覆盖掉原来的文件
        *追加模式，Context.MODE_APPEND 的值是 32768;
        * ①只能被创建这个文件的当前应用访问
        * ②若文件不存在会创建文件；若文件存在则在文件的末尾进行追加内容
        * 可读模式，Context.MODE_WORLD_READABLE的值是1;
        *①创建出来的文件可以被其他应用所读取
        * 可写模式，Context.MODE_WORLD_WRITEABLE的值是2
        *①允许其他应用对其进行写入。
        * */
        SharedPreferences sharedPreferences = context.getSharedPreferences(spName, Context.MODE_PRIVATE);
        //获取到edit对象
         Editor editor = sharedPreferences.edit();
        //通过editor对象写入数据
        //Map.Entry 是Map中的一个接口，他的用途是表示一个映射项（里面有Key和Value）,
        // Map.entrySet() 这个方法返回的是一个Set<Map.Entry<K,V>>
           for(Map.Entry<String,String> entry:params.entrySet()){
               editor.putString(entry.getKey(),entry.getValue());
           }
        //提交数据存入到xml文件中
        editor.commit();
    }
    /**
     * 得到SharedPreferences的值
     * */
    public Map<String,String> getSharedPreferences(){
        SharedPreferences sharedPreferences = context.getSharedPreferences(spName,Context.MODE_PRIVATE);
        Map<String,String> map = (Map<String,String>)sharedPreferences.getAll();
        return map;
    }
    /**
     * 全部清空数据
     * */
    public void clear(){
        SharedPreferences sharedPreferences = context.getSharedPreferences(spName,Context.MODE_PRIVATE);
        Editor editor = sharedPreferences.edit();
        editor.clear();
        editor.commit();
    }
    /**
     * 清空部分数据
     * */
    public void clear(String key){
        SharedPreferences sharedPreferences = context.getSharedPreferences(spName,Context.MODE_PRIVATE);
        Editor editor = sharedPreferences.edit();
        editor.remove(key);
        editor.commit();
    }
    /**
     * 设置登录状态
     * */
    public void setSharedPreferencesBool(String key,Boolean value){
        SharedPreferences sharedPreferences = context.getSharedPreferences(up,Context.MODE_PRIVATE);
        Editor editor = sharedPreferences.edit();
        editor.putBoolean(key,value);
        editor.commit();
    }
    /**
     * 获取登录状态
     *
     * */
    public Boolean getSharedPreferencesBool(String key){
        SharedPreferences sharedPreferences = context.getSharedPreferences(up,Context.MODE_PRIVATE);
       return sharedPreferences.getBoolean(key,false);
    }
    /**
     * 设置用户名和密码
     * */
    public void setSharedPreferencesUP(Map<String,String> params){
        SharedPreferences sharedPreferences = context.getSharedPreferences(up,Context.MODE_PRIVATE);
        Editor editor = sharedPreferences.edit();
        for(Map.Entry<String,String> entry : params.entrySet()){
            editor.putString(entry.getKey(),entry.getValue());
        }
        editor.commit();
    }


}
